/*
 * @(#)WorkflowStep.java
 *
 * Copyright (c) 2003 DCIVision Ltd
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of DCIVision
 * Ltd ("Confidential Information").  You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the license
 * agreement you entered into with DCIVision Ltd.
 */
package com.dcivision.workflow.bean;

import java.sql.Timestamp;
import java.util.List;

import com.dcivision.framework.GlobalConstant;
import com.dcivision.framework.Utility;
import com.dcivision.framework.bean.AbstractBaseObject;

/**
 * WorkflowStep.java
 * 
 * This class is the serializable bean reflecting business logic uses.
 * It represents a workflow step objects. Each workflow step can be belongs to
 * one workflow record. The whole workflow tree (parent-child relationship) is
 * linked by the MtmWorkflowStepWorkflowStep object.
 * 
 * @author Angus Shiu
 * @company DCIVision Limited
 * @creation date 05/08/2003
 * @version $Revision: 1.61.2.1 $
 * @see com.dcivision.workflow.bean.WorkflowRecord
 * @see com.dcivision.workflow.bean.MtmWorkflowStepWorkflowStep
 */
public class WorkflowStep extends AbstractBaseObject {
  
  public static final String REVISION = "$Revision: 1.61.2.1 $";
  
  static final long serialVersionUID = 5876221623250865214L;
  
  // Staic variables
  /** Indicates the step does not have a due date */
  public static final String OVER_DUE_TYPE_NA = "NA";
  /** Indicates the step due date is dynamically assign by previous progress */
  public static final String OVER_DUE_TYPE_ALLOW_ASSIGN = "ASSIGN";
  /** Indicates the step due date is X days after arrived */
  public static final String OVER_DUE_TYPE_DAYS = "DAYS";
  /** Indicates the step due date is a fixed date */
  public static final String OVER_DUE_TYPE_DATE = "DATE";
  
  /** Notify current step owner upon task arrived by email */
  public static final String NOTIFY_OWNER_TASK_ARRIVED_BY_MAIL = "A";
  /** Notify current step owner upon task arrived by system */
  public static final String NOTIFY_OWNER_TASK_ARRIVED_BY_SYSTEM = "B";
  /** Notify all step owner upon task arrived by email */
  public static final String NOTIFY_ALL_TASK_COMPLETED_BY_MAIL = "C";
  /** Notify all step owner upon task arrived by system */
  public static final String NOTIFY_ALL_TASK_COMPLETED_BY_SYSTEM = "D";
  /** Notify current step owner upon task overdued by email */
  public static final String NOTIFY_OWNER_TASK_OVERDUE_BY_MAIL = "E";
  /** Notify current step owner upon task overdued by system */
  public static final String NOTIFY_OWNER_TASK_OVERDUE_BY_SYSTEM = "F";
  /** Notify all step owner upon task overdued by email */
  public static final String NOTIFY_ALL_TASK_OVERDUE_BY_MAIL = "G";
  /** Notify all step owner upon task overdued by system */
  public static final String NOTIFY_ALL_TASK_OVERDUE_BY_SYSTEM = "H";
  /** Notify all step owner upon track being stopped */
  public static final String NOTIFY_ALL_TRACK_STOP = "S";
  
  public static final String INSERT_LOOPBACK_STEP = "R";
  public static final String INSERT_NEW_STEP = "N";
  public static final String INSERT_END_STEP = "E";
  
  /** Indicates the step type to be submit (the first step) */
  public static final String ACTION_TYPE_SUBMIT = "S";
  /** Indicates the step type to be approval step */
  public static final String ACTION_TYPE_APPROVAL = "A";
  /** Indicates the step type to be yes/no decision step */
  public static final String ACTION_TYPE_BOOLEAN = "B";
  /** Indicates the step type to be normal todo step */
  public static final String ACTION_TYPE_TASK_TO_DO = "T";
  /** Indicates the step type to be system automatic task */
  public static final String ACTION_TYPE_SYSTEM_AUTO = "C";
  /** Indicates the step type to be form-value driven */
  public static final String ACTION_TYPE_FORM_DRIVEN = "F";
  /** Indicates the step type to be an END step */
  public static final String ACTION_TYPE_END = "E";
  /** Indicates the step type to be user defined decision point */
  public static final String ACTION_TYPE_USER_DEFINED_TASK = "U";
  
  /** Indicates the parent type to be a single parent */
  public static final String PARENT_TYPE_SINGLE = "S";     // Parent type is single
  /** Indicates the parent type to be an approved route after an approval step */
  public static final String PARENT_TYPE_APPROVED = "A";   // Parent type is approved
  /** Indicates the parent type to be a rejected route after an approval step */
  public static final String PARENT_TYPE_REJECTED = "R";   // Parent type is rejected
  /** Indicates the parent type to be one of predefined routine */
  public static final String PARENT_TYPE_ROUTINE = "U";    // Parent type is one of predefined routine
  /** Indicates the parent type to be selected yes route after an yes/no step */
  public static final String PARENT_TYPE_YES = "T";		   // Parent type is yes
  /** Indicates the parent type to be selected no route after an yes/no step */
  public static final String PARENT_TYPE_NO = "F";         // Parent type is no
  /** Indicates the parent type to be one of form value-driven route */
  public static final String PARENT_TYPE_FROM_VALUE_DRIVEN = "D"; //Parent type is form value driven
  
  /** Indicates the overdue action to be keep waiting (do nothing) */
  public static final String NO_RESPONSE_ACTION_KEEP = "K";
  /** Indicates the overdue action to be treat as completed */
  public static final String NO_RESPONSE_ACTION_COMPLETE = "C";
  /** Indicates the overdue action to be treat as approved */
  public static final String NO_RESPONSE_ACTION_APPROVE = "A";
  /** Indicates the overdue action to be treat as rejected */
  public static final String NO_RESPONSE_ACTION_REJECT = "R";
  /** Indicates the overdue action to be treat as stop the whoele track */
  public static final String NO_RESPONSE_ACTION_STOP = "S";
  /** Indicates the overdue action to be treat as route to other step */
  public static final String NO_RESPONSE_ACTION_ROUTE = "O";
  /** Indicates the overdue action to be treat as selected yes */
  public static final String NO_RESPONSE_ACTION_YES = "T";
  /** Indicates the overdue action to be treat as selected no */
  public static final String NO_RESPONSE_ACTION_NO = "F";
  /** Indicates the overdue action to be treat as selected one of the predefined routes */
  public static final String NO_RESPONSE_ACTION_DECISION = "U";
  
  public static final String OPERATION_TYPE_INSERT_NEW_STEP = "IN"; //Insert new step
  public static final String OPERATION_TYPE_INSERT_BETWEEN = "IB"; //Insert step between
  public static final String OPERATION_TYPE_MOVE_SINGLE_STEP = "MS"; //Move single step
  public static final String OPERATION_TYPE_MOVE_ALL_STEP_AFTER = "MA"; //Move all step after
  public static final String OPERATION_TYPE_DELETE_SINGLE_STEP = "DS"; // Delete single step
  public static final String OPERATION_TYPE_DELETE_ALL_STEP = "DA"; // Delete all step after
  
  /** Navigation mode representing MOVE. */
  public static final String NAV_MODE_MOV = "M";
  /** Operation mode representing operation avaiable in MAINT for update. */
  public final static String OP_MODE_MOV = "MOV";
  
  /** Step sequence number of the "Start Workflow" step */
  public static final Integer START_STEP_SEQ_NO = new Integer(1);
  /** Step sequence number of the "END" step */
  public static final Integer END_STEP_SEQ_NO = new Integer(999999999);
  
  /** STEP NAME MAX LENGHT */
  public static final int STEP_NAME_MAX_LENGHT = 60;
  /** STEP NAME ROW UNIT LENGHT */
  public static final int STEP_NAME_ROW_UNIT_LENGHT = 19;
  
  public static final int STEP_DEFAULT_ROW_UNIT_LENGHT = 9;
  
  /** Dynamic assign due date is True,False or Mandatory **/
  /** Indicates the step is dynamic assign due date step */
  public static final String DYNAMIC_ASSIGN_DUE_DATE_TRUE = "Y";
  /** Indicates the step is not dynamic assign due date step */
  public static final String DYNAMIC_ASSIGN_DUE_DATE_FALSE = "N";
  /** Indicates the step is mandatory dynamic assign due date step */
  public static final String DYNAMIC_ASSIGN_DUE_DATE_MANDATORY = "M";
  
  /** Form Process Permission : Read / Change / Submit **/
  public static final String FORM_PROCESS_PERMISSION_HIDE = "H";
  public static final String FORM_PROCESS_PERMISSION_READ = "R";
  public static final String FORM_PROCESS_PERMISSION_CHANGE = "C";
  public static final String FORM_PROCESS_PERMISSION_SUBMIT = "S";
  public static final String FORM_PROCESS_PERMISSION_MANDATORY = "M";
  public static final String FORM_PROCESS_PERMISSION_INHERIT = "I";
  
  /** Indicates the step filterBy of  workflow submitter */
  public static final int STEP_FILTERBY_GROUP = -1;
  public static final int STEP_FILTERBY_ROLE = -2;
  
  
  private Integer workflowRecordID = null;
  private Integer stepSeq = null;
  private String stepName = null;
  private String actionType = null;
  private String actorId=null;
  
  private Integer actionID = null;
  private String description = null;
  private String workflowRule = null;
  private String priority = null;
  private String allowAssignDueDate = null; //ALLOW_ASSIGN_DUE_DATE
  private String allowAssignPriority = null;
  private String allowStop = GlobalConstant.FALSE;
  private String nextStepAllowAssignDueDate = null;
  private String onCompleteAckMethod = null;
  private Integer onNoResponseFor = null;
  private String onNoResponseCalendarID = null;
  private Timestamp onNoResponseAfter = null;
  private String onNoResponseAction = null;
  private Integer onNoResponseNextStepID = null;
  private String onNoResponseAckMethod = null;
  private Integer filterBy = null;
  private String followBranch = null;
  
  private String[] parentStepIDs = null;
  private String[] userRecords = null;
  private String[] userGroups = null;
  private String[] userRoles = null;
  private String[] actorTypes = null;
  private String assignActorType = null;
  private String actorType = null;
  private Integer loopBackStepID = null;
  private Integer parentStepID = null;
  private String parentType = null;
  private Integer currentStepID = null;
  private String currentType = null;
  private String overDueType = null;
  private Integer workflowStageID = null;
  
  private int numOfRoutine = 1;                             // For drawing workflow tree.
  
  private String parentWorkflowStepType = null;             // For reference in handling workflow progress.
  
  private WorkflowAction workflowAction = null;
  
  private String notifyOwnerTaskArrivalByMail = null;           //for display only
  private String notifyAllTaskCompletedByMail = null;           //for display only
  private String notifyOwnerTaskOverdueByMail = null;           //for display only
  private String notifyAllTaskOverdueByMail = null;             //for display only
  private String notifyOwnerTaskArrivalBySystem = null;           //for display only
  private String notifyAllTaskCompletedBySystem = null;           //for display only
  private String notifyOwnerTaskOverdueBySystem = null;           //for display only
  private String notifyAllTaskOverdueBySystem = null;             //for display only
  
  private String sectionID = null; //For relation sectionID
  private String categoryID = null; //For relation categoryID
  private String routeListValue = null; //for User Defined Task
  private String priorityRuleListValue = null; //For Workflow Step Priority Rule Setup
  private String notificationRuleListValue =null;//for workflow Step Notification rule Setup
  
  //Form Value Driven
  private String formRecordID = null;
  private String operand1 = null;
  private String operand2 = null;
  private String compare = null;
  private String formEquation = null;
  private String operationTypeForFormEquat = null;
  private String dateFormat = null;
  private String formEquationListValue = null;
  private Integer reserveStepID = null;
  
  // owner permission
  private String otherNoPermissionData = null;
  private String allPermissionData = null;
  private String userNoPermissionData = null;
  private String groupNoPermissionData = null;
  private String roleNoPermissionData = null;
  
  private String bindFormItemValue = null;
  
  // Presetation attributes.
  private List userActorList = null;
  
  //indicate the workflow record was released or not
  private boolean isReleased = false;
  
  private String loopBackALLOffset = null;
  
  public WorkflowStep() {
    super();
  }
  /**
   * @return Returns the workflowRecordID.
   */
  public Integer getWorkflowRecordID() {
    return(this.workflowRecordID);
  }
  /**
   * @param workflowRecordID The workflowRecordID to set.
   */
  public void setWorkflowRecordID(Integer workflowRecordID) {
    this.workflowRecordID = workflowRecordID;
  }
  /**
   * @return Returns the stepSeq.
   */
  public Integer getStepSeq() {
    return(this.stepSeq);
  }
  /**
   * @param stepSeq The stepSeq to set.
   */
  public void setStepSeq(Integer stepSeq) {
    this.stepSeq = stepSeq;
  }
  /**
   * @return Returns the stepName.
   */
  public String getStepName() {
    return(this.stepName);
  }
  /**
   * @param stepName The stepName to set.
   */
  public void setStepName(String stepName) {
    this.stepName = stepName;
  }
  /**
   * @return Returns the actionType.
   */
  public String getActionType() {
    return(this.actionType);
  }
  /**
   * @return Returns the actorId.
   */
  public String getActorId() {
    return actorId;
  }
  /**
   * @param actorId The actorId to set.
   */
  public void setActorId(String actorId) {
    this.actorId = actorId;
  }
  /**
   * @param actionType The actionType to set.
   */
  public void setActionType(String actionType) {
    this.actionType = actionType;
  }
  /**
   * @return Returns the actionID.
   */
  public Integer getActionID() {
    return(this.actionID);
  }
  /**
   * @param actionID The actionID to set.
   */
  public void setActionID(Integer actionID) {
    this.actionID = actionID;
  }
  /**
   * @return Returns the description.
   */
  public String getDescription() {
    return(this.description);
  }
  /**
   * @param description The description to set.
   */
  public void setDescription(String description) {
    this.description = description;
  }
  /**
   * @return Returns the workflowRule.
   */
  public String getWorkflowRule() {
    return(this.workflowRule);
  }
  /**
   * @param workflowRule The workflowRule to set.
   */
  public void setWorkflowRule(String workflowRule) {
    this.workflowRule = workflowRule;
  }
  /**
   * @return Returns the priority.
   */
  public String getPriority() {
    return(this.priority);
  }
  /**
   * @param priority The priority to set.
   */
  public void setPriority(String priority) {
    this.priority = priority;
  }
  /**
   * @return Returns the allowStop.
   */
  public String getAllowStop() {
    return(this.allowStop);
  }
  /**
   * @param allowStop The allowStop to set.
   */
  public void setAllowStop(String allowStop) {
    if (allowStop != null) {
      this.allowStop = allowStop;
    }
  }
  /**
   * @return Returns the onCompleteAckMethod.
   */
  public String getOnCompleteAckMethod() {
    return(this.onCompleteAckMethod);
  }
  /**
   * Sets notifications for step upon completion. For examples, to notifies
   * all step owners by both email and system, you set the following,
   * <pre>
   * currentStep.setOnCompleteAckMethod({@link #NOTIFY_ALL_TASK_COMPLETED_BY_MAIL}+{@link #NOTIFY_ALL_TASK_COMPLETED_BY_SYSTEM});
   * </pre> 
   * @param onCompleteAckMethod
   */
  public void setOnCompleteAckMethod(String onCompleteAckMethod) {
    this.onCompleteAckMethod = onCompleteAckMethod;
    if (!Utility.isEmpty(this.onCompleteAckMethod) && this.onCompleteAckMethod.indexOf(NOTIFY_OWNER_TASK_ARRIVED_BY_MAIL) > -1) {
      this.notifyOwnerTaskArrivalByMail = NOTIFY_OWNER_TASK_ARRIVED_BY_MAIL;
    }
    if (!Utility.isEmpty(this.onCompleteAckMethod) && this.onCompleteAckMethod.indexOf(NOTIFY_OWNER_TASK_ARRIVED_BY_SYSTEM) > -1) {
      this.notifyOwnerTaskArrivalBySystem = NOTIFY_OWNER_TASK_ARRIVED_BY_SYSTEM;
    }
    if (!Utility.isEmpty(this.onCompleteAckMethod) && this.onCompleteAckMethod.indexOf(NOTIFY_ALL_TASK_COMPLETED_BY_MAIL) > -1) {
      this.notifyAllTaskCompletedByMail = NOTIFY_ALL_TASK_COMPLETED_BY_MAIL;
    }
    if (!Utility.isEmpty(this.onCompleteAckMethod) && this.onCompleteAckMethod.indexOf(NOTIFY_ALL_TASK_COMPLETED_BY_SYSTEM) > -1) {
      this.notifyAllTaskCompletedBySystem = NOTIFY_ALL_TASK_COMPLETED_BY_SYSTEM;
    }
  }
  /**
   * @return Returns the onNoResponseFor.
   */
  public Integer getOnNoResponseFor() {
    return(this.onNoResponseFor);
  }
  /**
   * @param onNoResponseFor The onNoResponseFor to set.
   */
  public void setOnNoResponseFor(Integer onNoResponseFor) {
    this.onNoResponseFor = onNoResponseFor;
  }
  /**
   * @return Returns the onNoResponseAfter.
   */
  public Timestamp getOnNoResponseAfter() {
    return(this.onNoResponseAfter);
  }
  /**
   * @param onNoResponseAfter The onNoResponseAfter to set.
   */
  public void setOnNoResponseAfter(Timestamp onNoResponseAfter) {
    this.onNoResponseAfter = onNoResponseAfter;
  }
  /**
   * @return Returns the onNoResponseAction.
   */
  public String getOnNoResponseAction() {
    return(this.onNoResponseAction);
  }
  /**
   * @param onNoResponseAction The onNoResponseAction to set.
   */
  public void setOnNoResponseAction(String onNoResponseAction) {
    this.onNoResponseAction = onNoResponseAction;
  }
  /**
   * @return Returns the onNoResponseNextStepID.
   */
  public Integer getOnNoResponseNextStepID() {
    return(this.onNoResponseNextStepID);
  }
  /**
   * @param onNoResponseNextStepID The onNoResponseNextStepID to set.
   */
  public void setOnNoResponseNextStepID(Integer onNoResponseNextStepID) {
    this.onNoResponseNextStepID = onNoResponseNextStepID;
  }
  /**
   * @return Returns the onNoResponseAckMethod.
   */
  public String getOnNoResponseAckMethod() {
    return(this.onNoResponseAckMethod);
  }
  /**
   * @param onNoResponseAckMethod The onNoResponseAckMethod to set.
   */
  public void setOnNoResponseAckMethod(String onNoResponseAckMethod) {
    this.onNoResponseAckMethod = onNoResponseAckMethod;
    if (!Utility.isEmpty(this.onNoResponseAckMethod) && this.onNoResponseAckMethod.indexOf(NOTIFY_OWNER_TASK_OVERDUE_BY_MAIL)>-1 ) {
      this.notifyOwnerTaskOverdueByMail = NOTIFY_OWNER_TASK_OVERDUE_BY_MAIL;
    }
    if (!Utility.isEmpty(this.onNoResponseAckMethod) && this.onNoResponseAckMethod.indexOf(NOTIFY_OWNER_TASK_OVERDUE_BY_SYSTEM)>-1 ) {
      this.notifyOwnerTaskOverdueBySystem = NOTIFY_OWNER_TASK_OVERDUE_BY_SYSTEM;
    }
    if (!Utility.isEmpty(this.onNoResponseAckMethod) && this.onNoResponseAckMethod.indexOf(NOTIFY_ALL_TASK_OVERDUE_BY_MAIL)>-1 ) {
      this.notifyAllTaskOverdueByMail = NOTIFY_ALL_TASK_OVERDUE_BY_MAIL;
    }
    if (!Utility.isEmpty(this.onNoResponseAckMethod) && this.onNoResponseAckMethod.indexOf(NOTIFY_ALL_TASK_OVERDUE_BY_SYSTEM)>-1 ) {
      this.notifyAllTaskOverdueBySystem = NOTIFY_ALL_TASK_OVERDUE_BY_SYSTEM;
    }
  }
  /**
   * @return Returns the filterBy.
   */
  public Integer getFilterBy(){
    return this.filterBy;
  }
  /**
   * @param filterBy The filterBy to set.
   */
  public void setFilterBy(Integer filterBy){
    this.filterBy = filterBy;
  }
  /**
   * @return Returns the numOfRoutine.
   */
  public int getNumOfRoutine() {
    return(this.numOfRoutine);
  }
  /**
   * @param numOfRoutine The numOfRoutine to set.
   */
  public void setNumOfRoutine(int numOfRoutine) {
    this.numOfRoutine = numOfRoutine;
  }
  /**
   * @param userActorList The userActorList to set.
   */
  public void setUserActorList(List userActorList) {
    this.userActorList = userActorList;
  }
  /**
   * @return Returns the userActorList.
   */
  public List getUserActorList() {
    return userActorList;
  }
  /**
   * @param workflowAction The workflowAction to set.
   */
  public void setWorkflowAction(WorkflowAction workflowAction) {
    this.workflowAction = workflowAction;
  }
  /**
   * @return Returns the workflowAction.
   */
  public WorkflowAction getWorkflowAction() {
    return (this.workflowAction);
  }
  /**
   * @param parentWorkflowStepType The parentWorkflowStepType to set.
   */
  public void setParentWorkflowStepType(String parentWorkflowStepType){
    this.parentWorkflowStepType = parentWorkflowStepType;
  }
  /**
   * @return Returns the parentWorkflowStepType.
   */
  public String getParentWorkflowStepType() {
    return (this.parentWorkflowStepType);
  }
  /**
   * @return Returns the notifyOwnerTaskArrivalByMail.
   */
  public String getNotifyOwnerTaskArrivalByMail() {
    return (this.notifyOwnerTaskArrivalByMail);
  }
  /**
   * @param notifyOwnerTaskArrivalByMail The notifyOwnerTaskArrivalByMail to set.
   */
  public void setNotifyOwnerTaskArrivalByMail(String notifyOwnerTaskArrivalByMail) {
    this.notifyOwnerTaskArrivalByMail = notifyOwnerTaskArrivalByMail;
  }
  
  public boolean isNotifyOwnerTaskArrivalByMail() {
    return (NOTIFY_OWNER_TASK_ARRIVED_BY_MAIL.equals(this.notifyOwnerTaskArrivalByMail));
  }
  /**
   * @return Returns the notifyOwnerTaskArrivalBySystem.
   */
  public String getNotifyOwnerTaskArrivalBySystem() {
    return (this.notifyOwnerTaskArrivalBySystem);
  }
  /**
   * @param notifyOwnerTaskArrivalBySystem The notifyOwnerTaskArrivalBySystem to set.
   */
  public void setNotifyOwnerTaskArrivalBySystem(String notifyOwnerTaskArrivalBySystem) {
    this.notifyOwnerTaskArrivalBySystem = notifyOwnerTaskArrivalBySystem;
  }
  
  public boolean isNotifyOwnerTaskArrivalBySystem() {
    return (NOTIFY_OWNER_TASK_ARRIVED_BY_SYSTEM.equals(this.notifyOwnerTaskArrivalBySystem));
  }
  /**
   * @return Returns the notifyAllTaskCompletedByMail.
   */
  public String getNotifyAllTaskCompletedByMail() {
    return (this.notifyAllTaskCompletedByMail);
  }
  /**
   * @param notifyAllTaskCompletedByMail The notifyAllTaskCompletedByMail to set.
   */
  public void setNotifyAllTaskCompletedByMail(String notifyAllTaskCompletedByMail) {
    this.notifyAllTaskCompletedByMail = notifyAllTaskCompletedByMail;
  }
  
  public boolean isNotifyAllTaskCompletedByMail() {
    return(NOTIFY_ALL_TASK_COMPLETED_BY_MAIL.equals(this.notifyAllTaskCompletedByMail));
  }
  /**
   * @return Returns the notifyAllTaskCompletedBySystem.
   */
  public String getNotifyAllTaskCompletedBySystem() {
    return (this.notifyAllTaskCompletedBySystem);
  }
  /**
   * @param notifyAllTaskCompletedBySystem The notifyAllTaskCompletedBySystem to set.
   */
  public void setNotifyAllTaskCompletedBySystem(String notifyAllTaskCompletedBySystem) {
    this.notifyAllTaskCompletedBySystem = notifyAllTaskCompletedBySystem;
  }
  
  public boolean isNotifyAllTaskCompletedBySystem() {
    return(NOTIFY_ALL_TASK_COMPLETED_BY_SYSTEM.equals(this.notifyAllTaskCompletedBySystem));
  }
  /**
   * @return Returns the notifyOwnerTaskOverdueByMail.
   */
  public String getNotifyOwnerTaskOverdueByMail() {
    return (this.notifyOwnerTaskOverdueByMail);
  }
  /**
   * @param notifyOwnerTaskOverdueByMail The notifyOwnerTaskOverdueByMail to set.
   */
  public void setNotifyOwnerTaskOverdueByMail(String notifyOwnerTaskOverdueByMail) {
    this.notifyOwnerTaskOverdueByMail = notifyOwnerTaskOverdueByMail;
  }
  
  public boolean isNotifyOwnerTaskOverdueByMail() {
    return(NOTIFY_OWNER_TASK_OVERDUE_BY_MAIL.equals(this.notifyOwnerTaskOverdueByMail));
  }
  /**
   * @return Returns the notifyOwnerTaskOverdueBySystem.
   */
  public String getNotifyOwnerTaskOverdueBySystem() {
    return (this.notifyOwnerTaskOverdueBySystem);
  }
  /**
   * @param notifyOwnerTaskOverdueBySystem The notifyOwnerTaskOverdueBySystem to set.
   */
  public void setNotifyOwnerTaskOverdueBySystem(String notifyOwnerTaskOverdueBySystem) {
    this.notifyOwnerTaskOverdueBySystem = notifyOwnerTaskOverdueBySystem;
  }
  
  public boolean isNotifyOwnerTaskOverdueBySystem() {
    return(NOTIFY_OWNER_TASK_OVERDUE_BY_SYSTEM.equals(this.notifyOwnerTaskOverdueBySystem));
  }
  /**
   * @return Returns the notifyAllTaskOverdueByMail.
   */
  public String getNotifyAllTaskOverdueByMail() {
    return (this.notifyAllTaskOverdueByMail);
  }
  /**
   * @param notifyAllTaskOverdueByMail The notifyAllTaskOverdueByMail to set.
   */
  public void setNotifyAllTaskOverdueByMail(String notifyAllTaskOverdueByMail) {
    this.notifyAllTaskOverdueByMail = notifyAllTaskOverdueByMail;
  }
  
  public boolean isNotifyAllTaskOverdueByMail() {
    return (NOTIFY_ALL_TASK_OVERDUE_BY_MAIL.equals(this.notifyAllTaskOverdueByMail));
  }
  /**
   * @return Returns the notifyAllTaskOverdueBySystem.
   */
  public String getNotifyAllTaskOverdueBySystem() {
    return (this.notifyAllTaskOverdueBySystem);
  }
  /**
   * @param notifyAllTaskOverdueBySystem The notifyAllTaskOverdueBySystem to set.
   */
  public void setNotifyAllTaskOverdueBySystem(String notifyAllTaskOverdueBySystem) {
    this.notifyAllTaskOverdueBySystem = notifyAllTaskOverdueBySystem;
  }
  
  public boolean isNotifyAllTaskOverdueBySystem() {
    return (NOTIFY_ALL_TASK_OVERDUE_BY_SYSTEM.equals(this.notifyAllTaskOverdueBySystem));
  }
  /**
   * @return Returns the parentStepIDs.
   */
  public String[] getParentStepIDs() {
    return(this.parentStepIDs);
  }
  /**
   * @param parentStepIDs The parentStepIDs to set.
   */
  public void setParentStepIDs(String[] parentStepIDs) {
    this.parentStepIDs = parentStepIDs;
  }
  /**
   * @return Returns the userRecords.
   */
  public String[] getUserRecords() {
    return(this.userRecords);
  }
  /**
   * @param userRecords The userRecords to set.
   */
  public void setUserRecords(String[] userRecords) {
    this.userRecords = userRecords;
  }
  /**
   * @return Returns the userGroups.
   */
  public String[] getUserGroups() {
    return(this.userGroups);
  }
  /**
   * @param userGroups The userGroups to set.
   */
  public void setUserGroups(String[] userGroups) {
    this.userGroups = userGroups;
  }
  /**
   * @return Returns the userRoles.
   */
  public String[] getUserRoles() {
    return(this.userRoles);
  }
  /**
   * @param userRoles The userRoles to set.
   */
  public void setUserRoles(String[] userRoles) {
    this.userRoles = userRoles;
  }
  /**
   * @return Returns the actorType.
   */
  public String getActorType() {
    return (this.actorType);
  }
  /**
   * @param actorType The actorType to set.
   */
  public void setActorType(String actorType) {
    this.actorType = actorType;
  }
  /**
   * @return Returns the loopBackStepID.
   */
  public Integer getLoopBackStepID() {
    return(this.loopBackStepID);
  }
  /**
   * @param loopBackStepID The loopBackStepID to set.
   */
  public void setLoopBackStepID(Integer loopBackStepID) {
    this.loopBackStepID = loopBackStepID;
  }
  /**
   * @return Returns the parentStepID.
   */
  public Integer getParentStepID() {
    return(this.parentStepID);
  }
  /**
   * @param parentStepID The parentStepID to set.
   */
  public void setParentStepID(Integer parentStepID) {
    this.parentStepID = parentStepID;
  }
  /**
   * @return Returns the currentStepID.
   */
  public Integer getCurrentStepID() {
    return(this.currentStepID);
  }
  /**
   * @param currentStepID The currentStepID to set.
   */
  public void setCurrentStepID(Integer currentStepID) {
    this.currentStepID = currentStepID;
  }
  /**
   * @return Returns the parentType.
   */
  public String getParentType() {
    return (this.parentType);
  }
  /**
   * @param parentType The parentType to set.
   */
  public void setParentType(String parentType) {
    this.parentType = parentType;
  }
  /**
   * @return Returns the currentType.
   */
  public String getCurrentType() {
    return (this.currentType);
  }
  /**
   * @param currentType The currentType to set.
   */
  public void setCurrentType(String currentType) {
    this.currentType = currentType;
  }
  /**
   * @return Returns the overDueType.
   */
  public String getOverDueType() {
    return (this.overDueType);
  }
  /**
   * @param overDueType The overDueType to set.
   */
  public void setOverDueType(String overDueType) {
    this.overDueType = overDueType;
  }
  /**
   * @return Returns the sectionID.
   */
  public String getSectionID() {
    return(this.sectionID);
  }
  /**
   * @param sectionID The sectionID to set.
   */
  public void setSectionID(String sectionIDs) {
    this.sectionID = sectionIDs;
  }
  /**
   * @return Returns the categoryID.
   */
  public String getCategroyID() {
    return(this.categoryID );
  }
  /**
   * @param categoryID The categoryID to set.
   */
  public void setCategoryID(String categoryID) {
    this.categoryID = categoryID;
  }
  /**
   * @return Returns the routeListValue.
   */
  public String getRouteListValue(){
    return this.routeListValue;
  }
  /**
   * @param routeListValue The routeListValue to set.
   */
  public void setRouteListValue(String routeListValue){
    this.routeListValue = routeListValue;
  }
  /**
   * @return Returns the formRecordID.
   */
  public String getFormRecordID(){
    return this.formRecordID;
  }
  /**
   * @param formRecordID The formRecordID to set.
   */
  public void setFormRecordID(String formRecordID){
    this.formRecordID = formRecordID;
  }
  /**
   * @return Returns the operand1.
   */
  public String getOperand1(){
    return this.operand1;
  }
  /**
   * @param operand1 The operand1 to set.
   */
  public void setOperand1(String operand1){
    this.operand1 = operand1;
  }
  /**
   * @return Returns the operand2.
   */
  public String getOperand2(){
    return this.operand2;
  }
  /**
   * @param operand2 The operand2 to set.
   */
  public void setOperand2(String operand2){
    this.operand2 = operand2;
  }
  /**
   * @return Returns the compare.
   */
  public String getCompare(){
    return this.compare;
  }
  /**
   * @param compare The compare to set.
   */
  public void setCompare(String compare){
    this.compare = compare;
  }
  /**
   * @return Returns the formEquation.
   */
  public String getFormEquation(){
    return this.formEquation;
  }
  /**
   * @param formEquation The formEquation to set.
   */
  public void setFormEquation(String formEquation){
    this.formEquation = formEquation;
  }
  /**
   * @return Returns the operationTypeForFormEquat.
   */
  public String getOperationTypeForFormEquat(){
    return this.operationTypeForFormEquat;
  }
  /**
   * @param operationTypeForFormEquat The operationTypeForFormEquat to set.
   */
  public void setOperationTypeForFormEquat(String operationType){
    this.operationTypeForFormEquat = operationType;
  }
  /**
   * @return Returns the dateFormat.
   */
  public String getDateFormat(){
    return this.dateFormat;
  }
  /**
   * @param dateFormat The dateFormat to set.
   */
  public void setDateFormat(String dateFormat){
    this.dateFormat = dateFormat;
  }
  /**
   * @return Returns the allowAssignDueDate.
   */
  public String getAllowAssignDueDate(){
    return this.allowAssignDueDate;
  }
  /**
   * @param allowAssignDueDate The allowAssignDueDate to set.
   */
  public void setAllowAssignDueDate(String allowAssignDueDate){
    this.allowAssignDueDate = allowAssignDueDate;
  }
  /**
   * @return Returns the nextStepAllowAssignDueDate.
   */
  public String getNextStepAllowAssignDueDate(){
    return this.nextStepAllowAssignDueDate;
  }
  /**
   * @param nextStepAllowAssignDueDate The nextStepAllowAssignDueDate to set.
   */
  public void setNextStepAllowAssignDueDate(String nextStepAllowAssignDueDate){
    this.nextStepAllowAssignDueDate = nextStepAllowAssignDueDate;
  }
  /**
   * @return Returns the followBranch.
   */
  public String getFollowBranch(){
    return this.followBranch;
  }
  /**
   * @param followBranch The followBranch to set.
   */
  public void setFollowBranch(String followBranch){
    this.followBranch = followBranch;
  }
  /**
   * @return Returns the allowAssignPriority.
   */
  public String getAllowAssignPriority(){
    return this.allowAssignPriority;
  }
  /**
   * @param allowAssignPriority The allowAssignPriority to set.
   */
  public void setAllowAssignPriority(String allowAssignPriority){
    this.allowAssignPriority = allowAssignPriority;  
  }
  /**
   * @return Returns the priorityRuleListValue.
   */
  public String getPriorityRuleListValue(){
    return this.priorityRuleListValue;
  }
  /**
   * @param priorityRuleListValue The priorityRuleListValue to set.
   */
  public void setPriorityRuleListValue(String priorityRuleListValue){
    this.priorityRuleListValue = priorityRuleListValue;  
  }
  /**
   * @return Returns the formEquationListValue.
   */
  public String getFormEquationListValue(){
    return this.formEquationListValue; 
  }
  /**
   * @param formEquationListValue The formEquationListValue to set.
   */
  public void setFormEquationListValue(String formEquationListValue){
    this.formEquationListValue = formEquationListValue;
  }
  
  /**
   * @return Returns the notificationRuleListValue.
   */
  public String getNotificationRuleListValue() {
    return notificationRuleListValue;
  }
  
  /**
   * @param notificationRuleListValue The notificationRuleListValue to set.
   */
  public void setNotificationRuleListValue(String notificationRuleListValue) {
    this.notificationRuleListValue = notificationRuleListValue;
  }
  /**
   * @return Returns the actorTypes.
   */
  public String[] getActorTypes() {
    return actorTypes;
  }
  /**
   * @param actorTypes The actorTypes to set.
   */
  public void setActorTypes(String[] actorTypes) {
    this.actorTypes = actorTypes;
  }
  /**
   * @return Returns the assignActorType.
   */
  public String getAssignActorType() {
    return assignActorType;
  }
  /**
   * @param assignActorType The assignActorType to set.
   */
  public void setAssignActorType(String assignActorType){
    this.assignActorType = assignActorType;
  }
  /**
   * @return Returns the reserveStepID.
   */
  public Integer getReserveStepID() {
    return reserveStepID;
  }
  /**
   * @param reserveStepID The reserveStepID to set.
   */
  public void setReserveStepID(Integer reserveStepID) {
    this.reserveStepID = reserveStepID;
  }
  /**
   * @return Returns the isReleased.
   */
  public boolean isReleased() {
    return isReleased;
  }
  /**
   * @param isReleased The isReleased to set.
   */
  public void setReleased(boolean isReleased) {
    this.isReleased = isReleased;
  }
  /**
   * @return Returns the groupNoPermissionData.
   */
  public String getGroupNoPermissionData() {
    return groupNoPermissionData;
  }
  /**
   * @param groupNoPermissionData The groupNoPermissionData to set.
   */
  public void setGroupNoPermissionData(String groupNoPermissionData) {
    this.groupNoPermissionData = groupNoPermissionData;
  }
  /**
   * @return Returns the otherNoPermissionData.
   */
  public String getOtherNoPermissionData() {
    return otherNoPermissionData;
  }
  /**
   * @param otherNoPermissionData The otherNoPermissionData to set.
   */
  public void setOtherNoPermissionData(String otherNoPermissionData) {
    this.otherNoPermissionData = otherNoPermissionData;
  }
  /**
   * @return Returns the roleNoPermissionData.
   */
  public String getRoleNoPermissionData() {
    return roleNoPermissionData;
  }
  /**
   * @param roleNoPermissionData The roleNoPermissionData to set.
   */
  public void setRoleNoPermissionData(String roleNoPermissionData) {
    this.roleNoPermissionData = roleNoPermissionData;
  }
  /**
   * @return Returns the userNoPermissionData.
   */
  public String getUserNoPermissionData() {
    return userNoPermissionData;
  }
  /**
   * @param userNoPermissionData The userNoPermissionData to set.
   */
  public void setUserNoPermissionData(String userNoPermissionData) {
    this.userNoPermissionData = userNoPermissionData;
  }
  /**
   * @return Returns the allPermissionData.
   */
  public String getAllPermissionData() {
    return allPermissionData;
  }
  /**
   * @param allPermissionData The allPermissionData to set.
   */
  public void setAllPermissionData(String allPermissionData) {
    this.allPermissionData = allPermissionData;
  }
  /**
   * @return Returns the loopBackALLOffset.
   */
  public String getLoopBackALLOffset() {
    return loopBackALLOffset;
  }
  /**
   * @param loopBackALLOffset The loopBackALLOffset to set.
   */
  public void setLoopBackALLOffset(String loopBackALLOffset) {
    this.loopBackALLOffset = loopBackALLOffset;
  }
  /**
   * @return Returns the bindFormItemValue.
   */
  public String getBindFormItemValue() {
    return bindFormItemValue;
  }
  /**
   * @param bindFormItemValue The bindFormItemValue to set.
   */
  public void setBindFormItemValue(String bindFormItemValue) {
    this.bindFormItemValue = bindFormItemValue;
  }
  /**
   * @return Returns the onNoResponseCalendarID.
   */
  public String getOnNoResponseCalendarID() {
    return onNoResponseCalendarID;
  }
  /**
   * @param onNoResponseCalendarID The onNoResponseCalendarID to set.
   */
  public void setOnNoResponseCalendarID(String onNoResponseCalendarID) {
    this.onNoResponseCalendarID = onNoResponseCalendarID;
  }
  /**
   * @return Returns the workflowStageID.
   */
  public Integer getWorkflowStageID() {
    return workflowStageID;
  }
  /**
   * @param workflowStageID The workflowStageID to set.
   */
  public void setWorkflowStageID(Integer workflowStageID) {
    this.workflowStageID = workflowStageID;
  }
}
